/** @jsxImportSource @emotion/react */
import * as React from "react";
import {
    Text, useTheme, Button, useToast, TextArea,
} from "customize-easy-ui-component";
import {
    InspectRecordLayout, InternalItemProps, useItemInputControl
} from "../../common/base";
import {setupItemAreaRoute} from "./orcIspConfig";
import {useMedia} from "use-media";
import {assertNamesUnique} from "../../common/eHelper";
import {itemA结论,} from "../../mobilecr/editorIN";
import {itemA技术见证, } from "../editorJj";
import {EachMeasureCritConfig} from "../../common/msCriteria";
import {EditStorageContext} from "../../StorageContext";


const 制造许可证级别选=['滑行和旋转类B','滑行和旋转类'];
export const 施工类别选=['安装','重大修理','改造'];
const 升悬挂部件选=['钢丝绳','环链','纤维绳','钢铰线','其他'];
export const config设备概况 = [
    [['使用单位名称', '_$使用单位'] ],
    [['使用单位地址', '_$使用单位地址'] ],
    [['分支机构名称', '_$分支机构'] ],
    [['分支机构地址', '_$分支机构地址'] ],
    [['使用单位邮编', '_$使用单位邮编'], ['使用单位统一社会信用代码', '_$使用单位信用码'] ],
    [['设备所在区域', '_$使用地区域'] ],
    [['使用地点', '_$设备使用地点']],
    [['安全管理人员', '安全员'], ['联系电话', '安全员电'] ],
    [['使用登记证编号', '_$使用证号'], ['注册代码', '_$注册代码']],
    [['单位内部编号','_$单位内部编号'], [' ',{r:''}] ],
    [['出厂编号', '_$出厂编号'], ['设备型号', '设备型号'] ],
    //游乐设施级别:edt.level
    [['设备名称', '_$设备名称'], ['设备级别', '_$设备等级']],
    //svp?.额载荷
    [['额定载荷','_$额定载人','人'], ['制造日期', '_$制造日期'] ],
    [['倾、夹角或坡度','_$倾角坡度','°'], ['回转直径', '_$回转直径','m'] ],
    [['座舱高度','_$座舱高度','m'], ['额定速度', '_$额定速度','m/min'] ],
    [['驱动形式', '_$驱动形式'], ['主功率', '_$主机功率','kW'] ],
    [['施工类别',{n:'施工类别',t:'l',l:施工类别选}], ['检验类别', '_$检验类别'] ],
    [['设计使用年限','_$设计年限', '年'], ['延长使用年限',{n:'延长年',t:'n',u:'年'}] ],
    [['使用年限到期时间','_$使用到期时' ], ['投入使用时间', '_$投用日期'] ],
    [['设备联系人','_$设备联系人'],['联系人电话','_$设备联系手机'] ],
    [['制造许可证编号', '制造许号'], ['制造许可证级别', {n: '制许可级', t: 'l', l: 制造许可证级别选}], ],
    [['安装改造修理许可证编号', '安装许号'], ['安装改造修理许可证级别', {n: '安装可级', t: 'l', l: 制造许可证级别选}], ],
    [['下检日期','_$新下检日']  ],
    [['产权单位名称', '_$产权单位'] ],
    [['产权单位地址', '_$产权单位地址'] ],
    [['制造单位名称', '_$制造单位'] ],
    [['改造单位名称','_$改造单位']],
    [['安装单位名称','_$安装单位']],
    [['大修单位名称','_$维修单位']],
    [['维保单位名称', '_$维保单位']],
    [['现场检验条件',{r:'见附录B1'}],['型式试验样机',{n:'型试样机',t:'b'}]],
    [['整改反馈确认期限',{n:'改反馈期',t:'d'}], ['下次检验日期','_$新下检日'] ],
    [['检验意见通知书编号','意通知号'], ],
    [['检验依据',{r:'《游乐设施监督检验规程（试行）》（国质检锅[2002]124号）'}]],
    /*报告接收人 接收人电话 报告接收地址 ： 报告接收#3个字段？属于业务层面的，不用放报告记录这*/
];
/**开启编制时的：默认值初始化操作。  若打印：本编辑器全部都不显示。
 * */
export const EntranceSetup =
React.forwardRef((
    {children, show, alone = true, repId, verId, rep}: InternalItemProps, ref
) => {
    const theme = useTheme();
    const atPrint = useMedia('print');
    const toast = useToast();
    const doCheckNames = React.useCallback((verId: string) => {
        const impressionismAs = setupItemAreaRoute({rep, noDefault: true, theme});
        //几个固定都会有的，其余测量项目多出的，【第一次】可检查console.log看看assertNamesUnique: 正常吗。rep?.tzFields没有区分设备类型的。
        //特殊的加 {"_Oitems": [{"c":], "_其它0": "×", "_其它0_D":
        const result = assertNamesUnique([{value: rep?.tzFields}, {value: impressionismAs?.Item, type: 'impr'},
            {value: config设备概况, type:'esnt'}, {value:[...itemA结论,...itemA技术见证] }, {value: config观测数据, type: 'mesB'},
            // {value:[  ] },
            {value:['unq','仪器表','检验条件', '_Oitems','_其它' ]} ]);
        toast({title: "完成！", subtitle: result ? "没发现冲突" : "测试开关没开", intent: "success"});
    }, [rep,toast,theme]);
    const {storage, setStorage} =React.useContext(EditStorageContext) as any;
    const getInpFilter = React.useCallback((par: any) => {
        const {_tblFixed, } =par||{};
        return {_tblFixed, };
    }, []);
    const {inp, setInp} = useItemInputControl({ref});
    if (atPrint) return null;
    else return (
        <InspectRecordLayout inp={inp} setInp={setInp} getInpFilter={getInpFilter} show={show}
                             alone={alone} label={'初始化本报告，默认值配置等'}>
            {process.env.REACT_APP_TEST==='true' && <><div>
                <Text variant="h5">构建开发模板时的工具：校验模板的存储name冲突；</Text>
                <Button intent='primary' onPress={() => doCheckNames(verId!)}>校验模板name唯一性</Button>
                <Text variant="h5">设置待测试表格的各列宽度：</Text>
                <TextArea value={storage?._tblFixed || ''} rows={2}
                          onChange={e => setStorage({ ...storage, _tblFixed: e.currentTarget.value || undefined}) }/>
            </div>
            </>
            }
            <hr/>
        </InspectRecordLayout>
    );
});


/**测量表：太多了可拆成两个编辑器； 注意：t: [] 不同于 t: [undefined,undefined,undefined]；
 * 解雇{check: '7.2'}只能放在外部：所以一个序号不能分拆两个的结论独立编辑的栏目；【所以】序号3有两个检验结果这里不支持的！
 * 加字段 sync: 配置的和检验项目列表是有联动。
 * */
export const config观测数据 = [
    [{n: '厢安距', t: ['6.19','(1)','非封闭式吊厢，必须设防止乘客在运行中与周围结构物相碰撞的安全装置或留出≥500mm的安全距离。'], u: 'mm',c: '四', d: '0',cit:'500≤x'}, ],
    [{check: '6.19', sync:'非封闭'}],
    [{n: '接地阻', t: ['7.2','(2)','低压配电系统保护接地电阻应≤10Ω。'], u: 'Ω',c: '四', d: '0', cit:'x≤10'},  ],
    [{check: '7.2'}],
    [{n: '组绝阻', t: ['7.4','(2)', '变压器的初、次级绕组间的绝缘电阻≥7MΩ。'], u: 'MΩ', c: '四', d: '2', save: true,cit:'7≤x'},  ],
    [{check: '7.4(2)'}],
    [{n: '组壳缘阻', t: [undefined,'(3)', '变压器绕组对金属外壳间的绝缘电阻≥2 MΩ。'], c: '弃', d: '2', save: false,cit:'2≤x'},   ],
    [{check: '7.4(3)'}],
    [{n: '地绝缘', t: ['7.28','(1)','带电回路与地之间的绝缘电阻应≥1MΩ。'], u: 'MΩ', c: '四',d: '0',cit:'1≤x'}, ],
    [{check: '7.28'}],
    [{n: '避雷阻', t: ['8.10','(1)','游乐设施高度超过15m时，应设避雷装置，避雷接地电阻≤10Ω。'], u: 'Ω',c: '四', d: '0',cit:'x≤10'}, ],
    [{check: '8.10'}],
] as EachMeasureCritConfig[][];

